package com.telit.firecommand.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.telit.common.dto.PatrolAndCruiseCountDTO;
import com.telit.firecommand.dto.CommEventDTO;
import com.telit.firecommand.entity.CommEvent;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CommEventDao extends BaseMapper<CommEvent> {
    int deleteByPrimaryKey(Long id);

    CommEvent selectByPrimaryKey(Long id);

    /**
     * 分页条件查询
     *
     * @return
     */
    IPage<CommEvent> listByCondition(IPage<CommEvent> commEventPage, @Param("commEvent") CommEventDTO commEventDTO);

    /**
     * 无分页条件查询
     *
     * @param commEventDTO
     * @return
     */
    List<CommEvent> listNoPageByCondition(@Param("commEvent") CommEventDTO commEventDTO);

    /**
     * 查询待接收或者未读的事件
     *
     * @return
     */
    List<CommEvent> listNoReadAndNoReceive(@Param("districtCode") String districtCode);

    /**
     * 根据来源查询上报事件次数
     *
     * @return
     */
    List<PatrolAndCruiseCountDTO> selectCountByResource();

    /**
     * 根据来源查询上报事件次数
     *
     * @param districtCode 依据区域
     * @return 返回查询结果集合
     */
//    @Cacheable(value = "firecommand:event:selectCountByResourceByDistrictCode",depict = "根据行政区划查询事件数量和来源")
    List<PatrolAndCruiseCountDTO> selectCountByResourceByDistrictCode(@Param("districtCode") String districtCode);

    /**
     * 根据状态查询事件数量
     *
     * @param status
     * @return
     */
    Integer selectCountByStatus(@Param("status") String status);
}